/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package quanlisinhvien.dal;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import quanlisinhvien.core.MyConnectUnit;
import quanlisinhvien.dto.SinhVienDTO;

/**
 *
 * @author Marshmallow
 */
public class SinhVienDAO {
    
    private MyConnectUnit conn;

    public SinhVienDAO() {
        this.conn = new MyConnectUnit();
    }

    public SinhVienDAO(MyConnectUnit conn) {
        this.conn = conn;
    }
    
    public ResultSet LayDanhSachSinhVien(){
        try{
            return this.conn.Select("SINHVIEN, LOP, KHOA", "SINHVIEN.maLop = LOP.maLop AND KHOA.maKHOA = LOP.maKhoa");
        }
        catch (Exception ex){
            System.out.println("From SinhVienDAO: " + ex.getMessage());
            return null;
        }             
    }
    
    public ResultSet LaySinhVienTheoMa(String maSinhVien){
        try{            
            return this.conn.Select("SINHVIEN", "maSinhVien = '" + maSinhVien + "'");
        }
        catch (Exception ex){
            System.out.println("From SinhVienDAO: " + ex.getMessage());
            return null;
        }
    }
      
    private List<Object> NhanThongTin(SinhVienDTO sinhVien){
        List<Object> giaTri = new ArrayList<>();
        giaTri.add(sinhVien.getMaSinhVien());
        giaTri.add(sinhVien.getMaSinhVien());
        giaTri.add(sinhVien.getHoTen());
        giaTri.add(sinhVien.getGioiTinh().equals("Nam")? 0 : 1);
        giaTri.add(sinhVien.getNgaySinh());
        giaTri.add(sinhVien.getDiaChi());
        giaTri.add(sinhVien.getDiemMon1());
        giaTri.add(sinhVien.getDiemMon2());
        giaTri.add(sinhVien.getDiemMon3());
        giaTri.add(sinhVien.getLop().getMaLop());
        return giaTri;
    }
    
    public boolean ThemSinhVien(SinhVienDTO sinhVien){
        try{           
            return this.conn.Insert("SINHVIEN", this.NhanThongTin(sinhVien));
        }
        catch (Exception ex){
            System.out.println("From SinhVienDAO: " + ex.getMessage());
            return false;
        }
    }
    
    public boolean CapNhatSinhVien(SinhVienDTO sinhVien){
        try{
            return this.conn.Update("SINHVIEN", this.NhanThongTin(sinhVien), "maSinhVien = '" + sinhVien.getMaSinhVien() + "'");
        }
        catch (Exception ex){
            System.out.println("From SinhVienDAO: " + ex.getMessage());
            return false;
        }
    }
    
    public boolean XoaSinhVien(String maSinhVien){
        try{
            return this.conn.Delete("SINHVIEN", "maSinhVien = '" + maSinhVien + "'");
        }
        catch (Exception ex){
            System.out.println("From SinhVienDAO: " + ex.getMessage());
            return false;
        }
    }
      
}
